<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2020/11/27
 * Time: 17:34
 */
namespace app\common\helper;

use think\facade\Request;
use think\facade\View;

class appmsg_helper
{
    /**
     * 合并关联的图文信息
     * @param array $info
     * @param array $relation_info
     * @return multitype:
     */
    public static function merge_appmsg($info, $relation_info)
    {
        if (!$relation_info) {
            return $info;
        }

        unset($relation_info['id']);
        unset($relation_info['category_id']);
        unset($relation_info['merge_id']);
        unset($relation_info['type']);
        unset($relation_info['relation_id']);
        unset($relation_info['view_order']);
        $relation_info['real_cover'] = _image($relation_info['cover'], 'small');

        return array_merge($info, $relation_info);
    }

    /**
     * 取店铺的图文列表
     * @param array $filter
     * @return array
     */
    public static function get_store_appmsg_list($filter)
    {
        if (!$filter) {
            return array();
        }

        return getList('appmsg',$filter, ['id','asc'], 1);
    }


    /**
     * 获取空图文信息
     * @return 拼装的空图文信息
     */
    public static function get_empty_appmsg()
    {
        $msg = array(
            'id'       => 0,
            'title'    => '该图文信息不存在或已删除',
            'intro'    => '该图文信息不存在或已删除',
            'cover'    => SITE_URL.'/images/m/emptymsg.jpg',
            'add_time' => date('Y-m-d H:i'),
            'link'     => url('m/notfound'),
            'type'     => 1
        );

        return $msg;
    }


    /**
     * 根据merge_id取得图文信息
     * @param int $merge_id
     * @return array
     */
    public static function get_merge_appmsg_list($merge_id, $get_relation = 0)
    {
        $son_list = $tmp_son_list = getList('appmsg',array('merge_id'=>$merge_id, 'status'=>1), ['view_order', 'asc'], 0);

        // 如果需要处理子集
        if ($get_relation == 1) {
            $son_list = array();

            foreach ($tmp_son_list as $k=>$v) {
                if (!$v) {
                    continue;
                }

                $relation_info = array();
                if ($v['relation_id']) {
                    $relation_info = _uri('appmsg', $v['relation_id']);
                    if (!$relation_info) {
                        continue;
                    }
                }

                $son_list[] = self::merge_appmsg($v, $relation_info);
            }
        }

        return $son_list;
    }

    /**
     * 取店铺的图文数量
     * @param array $filter
     * @return int
     */
    public static function get_appmsg_num($filter)
    {
        if (!$filter) {
            return array();
        }

        return getTotal('appmsg', $filter);
    }

    /**
     * 获取审核记录
     * @param int $appmsg_id 图文id
     * @return array
     */
    public static function get_verify_record_info($appmsg_id)
    {
        if (!$appmsg_id) {
            return array();
        }

        $filter = array('appmsg_id'=>$appmsg_id);

        return _uri('appmsg_verify_record',array('appmsg_id'=>$appmsg_id));
    }

    /**
     * 根据merge_id取得图文信息
     * @param int $merge_id
     * @return array
     */
    public static function get_appmsg_list($id, $need_empty = 1)
    {
        $main_info = _uri('appmsg', ['id'=>$id]);
        if (!$main_info || $main_info['status'] != 1) {
            $list = array();
            if ($need_empty) {
                $list[0] = appmsg_helper::get_empty_appmsg();
            }

            return $list;
        }

        if ($main_info['type'] == 1) {
            //$main_info['link'] = htmlspecialchars_decode($main_info['link']);
            return array($main_info);
        }

        if ($main_info['relation_id'] > 0) {
            $relation_info = _uri('appmsg', $main_info['relation_id']);
            if ($relation_info) {
                $main_info = appmsg_helper::merge_appmsg($main_info, $relation_info);
            }
        }

        $list = self::get_merge_appmsg_list($id, 1);
        array_unshift($list, $main_info);

        return $list;
    }

    /**
     * 根据店铺取最新的一条审核过的图文
     * @param int $store_id
     * @return array
     */
    public static function get_store_last_appmsg_info($store_id)
    {
        return _uri('appmsg', array('merge_id'=>0, 'store_id'=>0, 'verify'=>1, 'status'=>1));
    }

    /**
     * 获取店铺的预览图文
     * @param int $id
     * @return array
     */
    public static function get_appmsg_list_for_store_preview($id)
    {
        // 总平台的图文
        $admin_appmsg_info = appmsg_helper::get_store_last_appmsg_info(0);
        $admin_appmsg_list = array();
        if ($admin_appmsg_info) {
            $admin_appmsg_list = appmsg_helper::get_appmsg_list($admin_appmsg_info['id']);
        }

        // 店铺自已的图文
        $appmsg_list = appmsg_helper::get_appmsg_list($id);

        // 组装新图文
        $appmsg_list = array_merge($admin_appmsg_list, $appmsg_list);

        return $appmsg_list;
    }

    public static function get_list($params)
    {
        $page = Request::param('page', 1);

        $filter = array();
        $filter[] = ['merge_id', '=', 0];
        if (isset($params['id']) && $params['id']) {
            $filter[] = ['id', '=', $params['id']];
        }

//        if ($this->store_id) {
//            if (isset($params['no_store_limit']) && $params['no_store_limit'] == 1) {
//
//            } else {
//                $filter['store_id'] = $this->store_id;
//            }
//        }
        if (isset($params['store_id']) && $params['store_id']) {
            if ($params['store_id'] == -1) {
                $filter[] = ['store_id', '=', 0];

            } else {
                $filter[] = ['store_id', '=', $params['store_id']];
            }
        }
        if (isset($params['type']) && $params['type']) {
            $filter[] = ['type', '=', $params['type']];
        }

        if (isset($params['only_sync']) && $params['only_sync'] == 1) {
            $filter[] = ['media_id', '>', ''];
        }
        if (isset($params['verify']) && $params['verify'] >= 1) {
            $filter[] = ['verify', '=', $params['verify']];
        }
        if (isset($params['category_id']) && $params['category_id']) {
            $filter[] = ['category_id', '=', $params['category_id']];
        }

        if (isset($params['open_card_id']) && $params['open_card_id']) {
            $filter[] = ['open_card_id', '=', $params['open_card_id']];
        }

        $filter[] = ['status', '=', 1];

        if (isset($params['select_id']) && $params['select_id'] && is_numeric($params['select_id'])) {
            $select_msg_info = _uri('appmsg', ['id'=>$params['select_id']]);

            View::assign('select_msg_info', $select_msg_info);
        }

        // 如果无需分页，则取出合部
        if (Request::param('no_limit', 0)) {
            // 多图文
            return getList('appmsg', $filter, ['id', 'desc'], 0);
        }

        $list  = array();
        $list  = getList('appmsg', $filter, ['id', 'desc']);

        // 图文已删除时的特殊处理
        if (empty($list) && isset($filter['id'])) {
            $list['data'][0] = appmsg_helper::get_empty_appmsg();
        }
        //var_dump($params, $list);
        return $list;
    }

//    /**
//     * 取得序列化的自动图文
//     */
//    public function get_serialize_automsg($params)
//    {
//        if (!$params || !isset($params['content'])) {
//            return array();
//        }
//
//        $new_params = unserialize($params['content']);
//        if (!$new_params) {
//            return array();
//        }
//        if (isset($params['return_son_list']) && isset($new_params['query_num']) && $new_params['query_num'] > 1) {
//            $new_params['return_son_list'] = 1;
//        }
//        $list = $this->get_automsg($new_params);
//        if (empty($list)) {
//            $list = array();
//            $list[0] = appmsg_helper::get_empty_appmsg();
//        }
//
//        return $list;
//    }
//
//    /**
//     * 取得自动图文信息
//     */
//    public function get_automsg($params)
//    {
//        if (!$params) {
//            return array();
//        }
//        //var_dump($params);
//
//        // 没有规则条件则返回空
//        if (!isset($params['type']) || !$params['type']
//            //|| !isset($params['sub_type']) || !$params['sub_type']
//            || !isset($params['query_type']) || !$params['query_type']
//            || !isset($params['query_num']) || !$params['query_num']) {
//            return array();
//        }
//
//        // 选择指定方式，却没有数量则返回为空
//        if ($params['query_type'] == 2 && !$params['query_num'] && (!isset($params['info']) || !$params['info'])) {
//            return array();
//        }
//
//        $_table = '';
//        $filter = array(
//        );
//        $order  = ' order by `add_time` DESC ';
//        $limit  = ' limit '.$params['query_num'];
//
//        $select_type = $params['type'];
//        $select_app_list = m_helper::get_select_app_list();
//        // 解开规则
//        if (1 == $select_type) {
//            $_table = 'article';
//
//        } else if (2 == $select_type) {
//            if (1 == $params['sub_type'] || 2 == $params['sub_type']) {
//                $_table = 'lottery';
//                $type = 1;
//                if (2 == $params['sub_type']) {
//                    $type = 2;
//                }
//
//                $filter['type'] = $type;
//
//            } else if (3 == $params['sub_type']) {
//                $_table = 'vote';
//            }
//
//        } else {
//            if (!isset($select_app_list[$select_type])) {
//                return array();
//            }
//
//            $_table = $select_app_list[$select_type]['code'];
//        }
//
//        // 如果取指定的，去掉排序
//        if ($params['query_type'] == 2 && isset($params['info']) && $params['info']) {
//            $filter['id'] = $params['info'];
//            $order = ' ';
//        }
//        $filter['status'] = 1;
//        if (!$filter) {
//            $filter = array(1=>1);
//        }
//        //var_dump($filter);
//
//        $ids = _model($_table)->getFields('id', $filter, $order.$limit);
//        $list = array();
//        $i = 1;
//        foreach ($ids as $k=>$v) {
//            if (!$v) {
//                continue;
//            }
//
//            if ($_table == 'lottery') {
//                $_info = lottery_helper::get_lottery_info_for_appmsg($v);
//            } else {
//                $_info = _uri($_table, $v);
//            }
//
//            if (!isset($_info['link']) || !$_info['link']) {
//                $_info['link'] = AnUrl($_table.'/m/'.$v);
//            }
//            if (!isset($_info['cover']) || !$_info['cover']) {
//                if ($_table == 'article') {
//                    $_info['cover'] = SITE_URL.'/images/m/default/article_default.jpg';
//                } else {
//                    $_info['cover'] = SITE_URL.'/images/m/'.$_table.'/cover.png';
//                }
//            }
//            //$tmp_info['title'] =
//
//            if ($i >= 2 && isset($params['return_son_list']) && $params['return_son_list']) {
//                $list[0]['son_list'][] = $_info;
//            } else {
//                $list[] = $_info;
//            }
//
//            $i++;
//        }
//        return $list;
//    }
}